var _ = require("lodash");
// _.assignWith(object, sources, [customizer])
// 和上一个方法的效果基本一致，也可以控制复制的过程
// 但是_.assignWith() 只处理对象自身的属性，而 _.assignInWith() 还会处理继承的属性
const object = {
  a: 1,
  b: 2,
};

const source = {
  b: 3,
  c: 4,
};

const customizer = (objValue, srcValue, key, object) => {
  // 如果目标对象中已存在相同键名的属性，则将属性值相加
  if (_.isNumber(objValue) && _.isNumber(srcValue)) {
    return objValue + srcValue;
  }
  // 否则使用默认的合并行为
  return undefined;
};

const result = _.assignWith(object, source, customizer);

console.log(result); // 输出: { a: 1, b: 5, c: 4 }
